﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Atendex.Dominio.Interfaces;
using Castle.ActiveRecord;

namespace Atendex.Dominio.ActiveRecord
{
    [ActiveRecord("tipo_solicitacao_an")]
    [Serializable]
    public class TipoSolicitacaoANAR : TipoSolicitacaoAR, ITipoSolicitacaoAN
    {
        private TipoSolicitacaoANAR() { }
        internal TipoSolicitacaoANAR(string nome, string descricao, IUnidadeNegocio areaNegocio)
            : base(nome, descricao)
        {
            AreaNegocio = areaNegocio;
        }
        [JoinedKey("tipo_id")]
        public override int Id { get; set; }

        private IArea areaNegocio;
        [BelongsTo(Type=typeof(UnidadeNegocioAR))]
        public override IArea AreaNegocio
        {
            get { return areaNegocio; }
            set
            {
                if (!(value is IUnidadeNegocio))
                {
                    throw new DominioException("Um tipo de solicitação de área de negócio precisa de uma área de negócio.");
                }
                this.areaNegocio = value;
            }
        }
    }
}
